#pragma once

// 定义告警级别
enum WarnLevel
{
    WarnLevel_Normal = 1,           // 一般告警
    WarnLevel_Critical,             // 严重告警
    WarnLevel_Fatal                 // 致命告警
};

// 定义告警类型
enum WarnType
{
    WarnType_Unknown = 0,           // 未知告警
    WarnType_Device,                // 设备告警
    WarnType_Performance,           // 性能告警
    WarnType_Application,           // 应用告警
    WarnType_Network,               // 网络告警
    WarnType_Environ                // 环境告警
};

struct ISMP
{
    virtual void Release() = 0;                                                                     // 释放对象
    virtual void SetServer(const char *lpszIP, unsigned short uPort) = 0;                           // 设置 SMP 服务地址
    virtual void SetApplication(const char *lpszAppName, const char *lpszIP) = 0;                   // 设置应用系统名称
    virtual bool Initialize() = 0;                                                                  // 初始化 SMP 模块
    virtual void Report(WarnLevel eLevel, WarnType eType, int nCode, const char *lpszDetail) = 0;   // 上报错误码
};

#ifdef __cplusplus
extern "C" {
#endif

ISMP* CreateSMP();

#ifdef __cplusplus
}
#endif
